iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
自我挑戰組

用 30 天和 ASP.NET Core 打造一個活動報名管理系統系列 第 25

ASP.NET Core - 活動報名管理系統:Day25 活動舉辦與活動報名的流程規劃與 Table

  • 分享至 

  • xImage
  •  

前言

昨天示範了如何讓整個 Controller 或是指定的 Action 需要登入才可以瀏覽,今天開始規劃將身分驗證功能加入到活動系統的流程,以及慢慢用程式碼去實現功能。

活動報名

  1. 瀏覽該活動頁面,並點擊「活動報名」後,系統先判斷是否已登入

    1. 若未登入,則頁面導向至登入頁面
    2. 若已登入,則執行活動報名功能
  2. 判斷當下時間是否在該活動開放報名時間範圍內

    1. 若不在範圍內,則顯示已不開放報名
    2. 若在範圍內,則繼續下一個流程
  3. 判斷已報名人數是否等於開放報名人數名額

    1. 若已報名人數等於開放報名人數,則顯示人數已額滿
    2. 若兩者不等於,則完成報名,將該登入使用者資訊存到該活動報名資料中
  4. 已報名活動資訊可在會員中心瀏覽

    1. 可在該畫面取消報名
    2. 畫面提供該活動超連結
  5. 再次點選該活動頁面時,後端比對該使用者資料與該活動報名資料,若比對符合一對一資料,則畫面顯示「取消報名」

儲存報名資訊的 Model:EventsEnroll

Table Schema

首先需要再建立一個 Model, Table 來儲存已報名使用者的資料:

  • 與 Events 是一對多的的關係
  • AspNetUsers 為 ASP.NET Core Identity 自動產生出來的 Table,是儲存已註冊的使用者資料,與 EventsEnroll 為多對多關係
    • 實際上 EventsEnroll 要關聯的是 ApplicationUser 這一個 Model

Model

EventsEnroll

public class EventsEnroll
    {
        public int Id { get; set; }
        [StringLength(50)]
        public string ApplicationUserId { get; set; }
        [Column(TypeName = "datetime2")]
        public DateTime EnrollTime { get; set; }

        public Events Events { get; set; }
        public ICollection<ApplicationUser> ApplicationUser { get; set; }

    }

Events

加入此段程式碼:

public ICollection<EventsEnroll> EventsEnroll { get; set; }   // 一對多

ApplicationUser

加入此段程式碼:

public ICollection<EventsEnroll> EventsEnroll { get; set; }

接著執行 dotnet ef migrations add 來新增 Migrations 以及 dotnet ef database update

DbContext

加入以下此段:

public DbSet<EventsEnroll> EventsEnroll { get; set; }

本日結語

今天將活動報名所需的 Table 都新增以及修改完成了,明天會著手在 Repository 與 Controller 的部分。

那麼明天見~


上一篇
ASP.NET Core - 活動報名管理系統:Day24 將身分驗證加到 Controller 與 Action
下一篇
ASP.NET Core - 活動報名管理系統:Day26 Repository、Controller 與 Services 加入活動報名與儲存報名資訊的功能
系列文
用 30 天和 ASP.NET Core 打造一個活動報名管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言